package cam.School.DataAccessObject;

import java.util.Date;
import java.util.List;

import cam.School.DAOException.DAOException;
import cam.School.DataTransfertObject.CallResult;
import cam.School.DataTransfertObject.ClassRoomDTO;
import cam.School.DataTransfertObject.StudentDTO;


public interface StudentDAO {
	public StudentDTO getById(Long id) throws DAOException;

	public List<StudentDTO> getAll() throws DAOException;

	public CallResult create(StudentDTO student) throws IllegalArgumentException,
			DAOException;

	public CallResult update(StudentDTO student) throws IllegalArgumentException,
			DAOException;

	public CallResult delete(long studentId) throws Exception;

	public StudentDTO getByFirstName(String firstName);
	
	public StudentDTO getByFirstAndLastName(String firstName, String lastName);

	public StudentDTO getByLastNameAndBirthday(Date birthday, String lastName);

	public List<StudentDTO> getByClassRoom(long classRoomId);

	public StudentDTO getByImmatricutionNumber(String immatriculationNumber);

	public List<StudentDTO> getClassRoomCapacity();

	public List<StudentDTO> getByClassRoomGroup(String className);
}
